import router from '@/router'
import store from '@/store'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css' // 引入进度条样式
// nprogress
/*
  1. 安装 npm i nprogress
  2. 导入 import Nprogress from 'nprogress'
          import 'nprogress/nprogress.css' // 引入进度条样式
  3.  Nprogress.start() 开始
      Nprogress.done()  结束
*/ 

// 白名单
let whitePage = ['/login', '/404']
// 前置守卫
router.beforeEach(async (to, from, next) => {
  Nprogress.start()
  // 访问的路径在白名单
  if (!store.getters.token) {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login?redirect=' + to.fullPath) // 跳转登录页时, 记录想去的页面的fullPath
    }
  } else {
    if (to.path === '/login') {
      next('/')
    } else {
      // 判断是否有用户信息, 没有: 获取用户信息后, next(), 有: next()
      if (!store.getters.isLogin) {
        await store.dispatch('user/getUserInfo')
      }
      next()
    }
  }
  Nprogress.done()
})
// 后置守卫
// 导航后置守卫(当你真正进入到某个页面之后才执行)
router.afterEach((to, from) => {
  Nprogress.done()
  // 将所有的页面切换之后滚动到最顶部
  window.scrollTo(0, 0)
})